<?php


class Chart{
	
	
	public function __construct(){

		global $app;
		
		switch ($_SERVER['REQUEST_METHOD']) {
			case 'GET':
				
				switch( $_GET['action']){
					case 'ajax':
												
						switch( $_GET['chart']){
							case 'applicationlanguage':
														
								echo $this->JSON_grafico_linguagem_aplicacoes( );

								break;
							
							case 'linguagensquantidade':
														
								echo $this->TSV_grafico_linguagem_quantidade( );

								break;
								
							case 'codigolivrefechado':
														
								echo $this->CSV_grafico_codigo_aberto_fechado( );

								break;	
							
							case 'applicationlanguageTilfordTree':
														
								echo $this->JSON_grafico_applicationlanguageTilfordTree( );

								break;		
						}
						
						
						exit();
						
					case 'del':
						
						
						break;

						
					default:
						
						global $app;

						$this->rowslist		=	$this->getRows( $app->getUser_id() );
						
						
						break;
				}
				
				
				break;
			case 'POST':
										
				
				break;
			default:
				exit("Caia fora");
				break;
		}
		

		
	}

	


	function JSON_grafico_applicationlanguageTilfordTree( ){
			
		global $app;	
		$result='';
  
  //{"name":"C#","children":[{"name":"BrightstarDB","size":1000}]}]}';
		
		
		//{"name":"C","children":[{"name":"5store","size":1000}]},
		
		
		
		$rows			=	$this->getAppLanguageCount( $app->getUser_id()  );
  	
			
		foreach( $rows as $key=>$item ){
				
			$rows_app	=	$this->getApplicationLanguage( $item->linguagem, $app->getUser_id()  );
			
			
			if( $result =="" )
					$result .= '{"name":"'.$item->linguagem.'","children":[';
				else
					$result .= ',{"name":"'.$item->linguagem.'","children":[';
				
			$body="";	
			foreach( $rows_app as $key2=>$application ){
										
				//$array_item = array('name'=>$item->linguagem, 'children'=>array('name'=>$application->nome, 'size'=>1000));
				
				if( $body =="" ){
					
					$result .= '{"name":"'.$application->nome.'","size":'.($item->quantidade*200).'}';
					$body=1;
					
				}					
				else
					$result .= ',{"name":"'.$application->nome.'","size":'.($item->quantidade*200).'}';
			}	
			
			
			$result .= ']}';
			
			
		}
		
		$result = '{"name": "Linguagens de Programação", "children": ['.$result.']}';
		
		return $result;	
	}



	function CSV_grafico_codigo_aberto_fechado( ){
			
		global $app;	
		$result='linguagem	quantidade'."\n";

		$result	=	"";
		$config	=	new Configuration();	
		
		$db 	=	new MySQL( $config->db_server, 
							$config->db_username, 
							$config->db_password, 
							$config->db_name );

		$where	=	array();
		
		$where[]=	'user_id = \''.$app->getUser_id().'\'';
		
		$where	=	$this->splitWhere( $where );
				
																
		$query 	=	'SELECT '
					. ' '				
					. ' linguagem, count(linguagem) quantidade '
					. ' '
					. ' FROM '.$config->db_table_semantic_web_application.' '
					. $where
					. " GROUP BY linguagem";

		$rows	=	$db->getQuery($query);
		$comercial=0;
		$livre=0;
		
		if(count( $rows )>0 ){
			  	
			foreach( $rows as $key=>$item ){
				
				if( $item->linguagem == "" ){
					$comercial=$item->quantidade;
				}else{
					$livre=$livre+$item->quantidade;
				}
				
			}		
			
			$result ="age,population
Código Fechado ({$comercial}),{$comercial}
Código Livre ({$livre}),{$livre}";

		}
	
		
		
		return $result;	
	}
	
	
	
	function TSV_grafico_linguagem_quantidade( ){
			
		global $app;	
		$result='linguagem	quantidade'."\n";

		$rows			=	$this->getAppLanguageCount( $app->getUser_id()  );
  	
		foreach( $rows as $key=>$item ){
			$result .= $item->linguagem."\t".($item->quantidade)."\n";
		}
		
	
		
		return $result;	
	}



	function JSON_grafico_linguagem_aplicacoes( ){
			
		global $app;	
		$result='';
  
  //{"name":"C#","children":[{"name":"BrightstarDB","size":1000}]}]}';
		
		
		//{"name":"C","children":[{"name":"5store","size":1000}]},
		
		
		
		$rows			=	$this->getAppLanguageCount( $app->getUser_id()  );
  	
			
		foreach( $rows as $key=>$item ){
				
			$rows_app	=	$this->getApplicationLanguage( $item->linguagem, $app->getUser_id()  );
			
			foreach( $rows_app as $key2=>$application ){
										
				//$array_item = array('name'=>$item->linguagem, 'children'=>array('name'=>$application->nome, 'size'=>1000));
				
				if( $result =="" )
					$result .= '{"name":"'.$item->linguagem.'","children":[{"name":"'.$application->nome.'","size":'.($item->quantidade*10).'}]}';
				else
					$result .= ',{"name":"'.$item->linguagem.'","children":[{"name":"'.$application->nome.'","size":'.($item->quantidade*10).'}]}';
			}	
			
			//array_push($result, $array_item );
			
			
		}
		
		$result = '{ "name": "app", "children": ['.$result.']}';
		
		return $result;	
	}
	
	
	function splitWhere( $where )
	{
		
		return ( count( $where ) ? 
								' WHERE ' . implode( ' AND ', $where ) : 
								'' );
	}
		
	
	public function getGrid( $rows ){
		
		$result = "";
		
		$result .="<tr>";
							
		$result .=	"<td>Ordem</td>";
		$result .=	"<td>Nome</td>";
		$result .=	"<td>Detalhe</td>";
		$result .=	"<td>URL</td>";
		$result .=	"<td>Linguagem</td>";
		$result .=	"<td>classificacao</td>";
		$result .=	"<td>Código Fonte Disponível</td>";
		
		$result .="</tr>";
			
		
		foreach( $rows as $key=>$item){
			$i++;
			$result .="<tr>";
							
			$result .=	"<td>$i</td>";
			$result .=	"<td><a href='editApp.php?action=edit&application_id=".$item->id."'><img src='images/icon/edit.png' border='0'></a>".$item->nome."</td>";
			$result .=	"<td>".$item->detalhe."</td>";
			$result .=	"<td><a target='_blank' href='".$item->url."'>".$item->url."</a></td>";
			$result .=	"<td>".$item->linguagem."</td>";
			$result .=	"<td>".$item->application_classification."</td>";
			$result .=	"<td>".($item->codigo_fonte_livre=="1"? "sim":"não")."</td>";
			
			$result .="</tr>";
		}
		
		
		
		return "<table border=1 border=1 width='100%'>".$result."</table>";
	}	
	
	
			
	function getRows( $user_id=0, $limit_start=0, $limit_end=10 )
	{

		$result	=	"";
		$config	=	new Configuration();	
		
		$db 	=	new MySQL( $config->db_server, 
							$config->db_username, 
							$config->db_password, 
							$config->db_name );

		$where	=	array();

		$where[]=	'a.user_id = \''.$user_id.'\'';
		
		$where	=	$this->splitWhere( $where );
				
																
		$query 	=	'SELECT '
					. ' '	
					. ' a.id, '
					. ' a.nome, '
					. ' a.detalhe, '	
					. ' a.user_id, '
					. ' a.url, '		
					. ' a.linguagem, '
					. ' b.nome application_classification '
					. ' '
					. ' FROM '.$config->db_table_semantic_web_application.' a '
					. ' LEFT JOIN '.$config->db_table_semantic_web_application_classification.' b ON '
					. ' a.application_classification_id =b.id '
					. $where;

		$rows	=	$db->getQuery($query);
		
		if(count( $rows )>0 )
			$result=	$rows;

		
		return $result;
	}
	
	
	function getApplicationLanguage( $linguagem='', $user_id=0 )
	{

		$result	=	"";
		$config	=	new Configuration();	
		
		$db 	=	new MySQL( $config->db_server, 
							$config->db_username, 
							$config->db_password, 
							$config->db_name );

		$where	=	array();
		
		$where[]=	'linguagem = \''.$linguagem.'\'';
		$where[]=	'user_id = \''.$user_id.'\'';
		$where[]=	'not linguagem = \'\'';
		
		$where	=	$this->splitWhere( $where );
				
																
		$query 	=	'SELECT '
					. ' '				
					. ' * '
					. ' '
					. ' FROM '.$config->db_table_semantic_web_application.' '
					. $where;
					

		$rows	=	$db->getQuery($query);
		
		if(count( $rows )>0 )
			$result=	$rows;
		
		return $result;
	}
	
			
	function getAppLanguageCount( $user_id=0 )
	{

		$result	=	"";
		$config	=	new Configuration();	
		
		$db 	=	new MySQL( $config->db_server, 
							$config->db_username, 
							$config->db_password, 
							$config->db_name );

		$where	=	array();

		$where[]=	'user_id = \''.$user_id.'\'';
		$where[]=	'not linguagem = \'\'';
		
		$where	=	$this->splitWhere( $where );
				
																
		$query 	=	'SELECT '
					. ' '				
					. ' linguagem, count(linguagem) quantidade '
					. ' '
					. ' FROM '.$config->db_table_semantic_web_application.' '
					. $where
					. " GROUP BY linguagem";
					// ORDER BY quantidade desc";

		$rows	=	$db->getQuery($query);
		
		if(count( $rows )>0 )
			$result=	$rows;
		
		return $result;
	}
	
	
	
	
	
}

?>